package javase.module2.task04;

public class SubAbstractTest extends AbstractTest {

    @Override
    public void show() {
        System.out.println("抽象类的子类必须要重写抽象方法");
    }

    public static void main(String[] args) {
        // 1.声明本类类型的引用指向本类类型的对象
        SubAbstractTest sat = new SubAbstractTest();
        sat.show();

        System.out.println("------------------------");
        // 2.声明AbstractTest类型的引用指向子类的对象，形成多态
        // 多态的使用场合之二：直接在方法体中使用抽象类的引用指向子类类型的对象
        AbstractTest at = new SubAbstractTest2();
        at.show();
        // 调用子类独有的方法
        System.out.println("------------------------");
        ((SubAbstractTest2)at).test();
        System.out.println("------------------------");
        SubAbstractTest2 st2 = new SubAbstractTest2();
        st2.test();


    }
}
